package test.model;

import m.common.model.*;
import m.common.model.type.FieldType;

import java.util.Date;
//表模型注解，在mconfig.properties配置model_pack里的所有类，包含此注解均会被标注为表模型
// 除了name（表名），description（表备注），还有其他属性
// autoCreate：是否自动创建
// oidField：oid属性对应数据库的字段
// oidIncrement：是否自增长
// isView和viewSql：是否视图和视图sql语句
@TableMeta(name = "t_student_info", description = "学生信息")
//新表建议只配置name和description, 启动后，该表就会自动创建，后续增加字段也会追加
public class StudentInfo extends Model {
    //表关联，用一个字段去关联一个表模型的主键，可用于关联查询
    @LinkTableMeta(name="room_oid",table= SchoolRoom.class,description="所属教室")
    private SchoolRoom room;
    //字符串类型
    @FieldMeta(name="name",type= FieldType.STRING,length=50,description="姓名")
    private String name;
    //日期类型，还有INT，DOUBLE，LONG可设置
    @FieldMeta(name="birthday",type= FieldType.DATE,description="生日")
    private Date birthday;
    //查询字段，可根据表里字段计算出查询字段
    @QueryFieldMeta(expression = "TIMESTAMPDIFF(YEAR,#{birthday},CURDATE())",type = FieldType.INT,description = "年龄")
    private Integer age;

    public SchoolRoom getRoom() {
        return room;
    }

    public void setRoom(SchoolRoom room) {
        this.room = room;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
